package net.zoneland.knowledge.enums;

import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;

/**
 * 党组织枚举,主要是13个党委数据.
 * 数据库中的数据没有排序字段，
 * 顺序：省杭宁温金台绍嘉湖丽舟衢
 * 暂时写死在代码.
 */
public enum PartyOrgEnum {
    /**
     * 省公司直属党委.
     */
    PROVINCE_PARTY("C58B5479-73BF-4876-BF07-50513AA482CD", "省公司直属党委", 100),
    /**
     * 杭州分公司党委.
     */
    HZ_PARTY("A84B9E94-CD82-453F-87A0-EF7FA2112813", "杭州分公司党委", 110),
    /**
     * 杭州分公司党委.
     */
    NB_PARTY("DD4E5013-68C1-4874-8562-6A0C7F52F883", "宁波分公司党委", 120),
    /**
     * 温州分公司党委.
     */
    WZ_PARTY("0F0D069B-8575-427E-80AF-36D062DF2280", "温州分公司党委", 130),
    /**
     * 金华分公司党委.
     */
    JH_PARTY("658569F8-381E-4639-97E4-49D746B3D411", "金华分公司党委", 140),
    /**
     * 台州分公司党委.
     */
    TZ_PARTY("26DF6207-80DB-4C2F-B4D8-4ECECFEDAD71", "台州分公司党委", 150),
    /**
     * 绍兴分公司党委.
     */
    SX_PARTY("7AFF9BBB-59F2-469E-B7DB-4BDF35F258FB", "绍兴分公司党委", 160),
    /**
     * 嘉兴分公司党委.
     */
    JX_PARTY("54D08A88-2704-4D1A-B49A-A50BB0814D2E", "嘉兴分公司党委", 170),
    /**
     * 湖州分公司党委.
     */
    HU_PARTY("B50D1047-D742-48C8-BBB8-D88AB8580A48", "湖州分公司党委", 180),
    /**
     * 丽水分公司党委.
     */
    LS_PARTY("3143E88E-67CD-4D22-BF99-813FDCAD9404", "丽水分公司党委", 190),
    /**
     * 舟山分公司党委.
     */
    ZS_PARTY("C227B30D-AB8C-4FE1-A496-4575D4F016CA", "舟山分公司党委", 200),
    /**
     * 衢州分公司党委.
     */
    QZ_PARTY("B7B7FC5F-9EF0-4340-83C8-381FB536516C", "衢州分公司党委", 210);

    PartyOrgEnum(final String orgUuid, final String orgName, final Integer order) {

        this.orgUuid = orgUuid;
        this.orgName = orgName;
        this.order = order;
    }

    public static PartyOrgEnum getEnumByOrgName(final String value){
        return  Arrays.stream(PartyOrgEnum.values())
                .filter(use -> StringUtils.equals(use.getOrgName(), value))
                .findAny()
                .orElse(PartyOrgEnum.PROVINCE_PARTY);
    }

    /**
     * 公司dn.
     */
    private final String orgUuid;

    /**
     * 党组织名称.
     */
    private final String orgName;

    /**
     * 顺序.
     */
    private final Integer order;

    /**
     * 获取 orgUuid.
     *
     * @return orgUuid
     */
    public String getOrgUuid() {

        return orgUuid;
    }

    /**
     * 获取 orgName.
     *
     * @return orgName
     */
    public String getOrgName() {

        return orgName;
    }

    /**
     * 获取 order.
     *
     * @return order
     */
    public Integer getOrder() {

        return order;
    }
}
